# 引入正则表达
import re
import jieba

def print_hi(name):
    print(f'Hi, {name}')

#分词
def cut_word(Text):
    # 使用正则表达式去除文本中所有的换行符和空白符
    Text = re.sub('\s+', '', Text)
    # 输出正文
    # print(Text)

    # 添加自定义词语有两种方式
    # jieba.add_word('主题')
    # jieba.add_word('聚焦')
    # jieba.add_word('解决')
    # 将此 txt 加载到 jieba 特色词库的代码如下
    jieba.load_userdict('D:\\Coding\\工作记录\\开发记录txt文档\\20241106 - S-教研关键词NLP\\教研关键词.txt')

    words_list = jieba.lcut(Text)  # 进行分词，结果为词语列表
    # 返回一个以分隔符'/'连接各个元素后生成的字符串
    line = "/".join(words_list)
    word = out_stopword(line)
    # print(line)
    # 列出关键字
    print(len(word))  # 输出词语总数量，结果为 32789
    print(word)  # 输出前 10 个词

#去除停用词
def out_stopword(seg):
    #打开写入关键词的文件
    print("去停用词：\n")
    wordlist = []

    #获取停用词表
    #开源网站GitHub上有整理好的停用词表，可以下载使用
    #goto456/stopwords: 中文常用停用词表（哈工大停用词表、百度停用词表等）——https://github.com/goto456/stopwords
    #停用词文本C:\Users\Administrator\hit_stopwords.txt
    stop = open('D:\\Coding\\工作记录\\开发记录txt文档\\20241106 - S-教研关键词NLP\\hit_stopwords.txt', 'r+', encoding='utf-8')
    #用‘\n’去分隔读取，返回一个一维数组
    stopword = stop.read().split("\n")
    #遍历分词表
    for key in seg.split('/'):
        #print(key)
        #去除停用词，去除单字，去除重复词
        if not(key.strip() in stopword) and (len(key.strip()) > 1) and not(key.strip() in wordlist) :
            wordlist.append(key)
    return wordlist

# main入口
if __name__ == '__main__':
    # 读取文件 encoding 参数需要根据文本文件实际的编码来设置
    with open('D:\\Coding\\工作记录\\开发记录txt文档\\20241106 - S-教研关键词NLP\\10月23日 - 专题报告记录内容1.txt', 'r', encoding='utf-8') as f:
        Text = f.read()  # 读取全部内容
    f.close()  # 关闭文件，必要的操作
    cut_word(Text)
